/*
*
* Copyright (C) 2004 - 2008 BitLaboratory (see http://www.bitlaboratory.com)
* All rights reserved. 
*
* Redistribution and use in source and binary forms, with or without modification, 
* are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice,
*    this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright notice,
*    this list of conditions and the following disclaimer in the documentation
*    and/or other materials provided with the distribution.
* 3. The name of the author may not be used to endorse or promote products
*    derived from this software without specific prior written permission. 
*
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED 
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT 
* SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT 
* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
* IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY 
* OF SUCH DAMAGE.
*
* You can find the latest version of this library at http://www.bitlaboratory.com
*
*/


using System;

namespace BitLaboratory.Win32Api.Windows
{
#if( _SHARED_ )
	internal enum CascadeFlags : uint
#else
	public enum CascadeFlags : uint
#endif
	{
		MDITILE_SKIPDISABLED			= 0x0002,
		MDITILE_ZORDER					= 0x0004
	}

#if( _SHARED_ )
	internal enum ChildWindowFromPointFlags : uint
#else
	public enum ChildWindowFromPointFlags : uint
#endif
	{
		CWP_ALL							= 0x0000,
		CWP_SKIPINVISIBLE				= 0x0001,
		CWP_SKIPDISABLED				= 0x0002,
		CWP_SKIPTRANSPARENT				= 0x0004
	}

#if( _SHARED_ )
	internal enum AncestorFlags : uint
#else
	public enum AncestorFlags : uint
#endif
	{
		GA_PARENT						= 1,
		GA_ROOT							= 2,
		GA_ROOTOWNER					= 3
	}

#if( _SHARED_ )
	internal enum GuiThreadInfoFlag : uint
#else
	public enum GuiThreadInfoFlag : uint
#endif
	{
		GUI_CARETBLINKING				= 0x00000001,
		GUI_INMOVESIZE					= 0x00000002,
		GUI_INMENUMODE					= 0x00000004,
		GUI_SYSTEMMENUMODE				= 0x00000008,
		GUI_POPUPMENUMODE				= 0x00000010,
		GUI_16BITTASK					= 0x00000020
	}

#if( _SHARED_ )
	internal enum LayeredWindowAttributesFlags : uint
#else
	public enum LayeredWindowAttributesFlags : uint
#endif
	{
		LWA_COLORKEY					= 0x00000001,
		LWA_ALPHA						= 0x00000002
	}

#if( _SHARED_ )
	internal enum NextWindowFlag : uint
#else
	public enum NextWindowFlag : uint
#endif
	{
		GW_HWNDNEXT						= 2,
		GW_HWNDPREV						= 3
	}

#if( _SHARED_ )
	internal enum TitleBarInfoArrayIndex : uint
#else
	public enum TitleBarInfoArrayIndex : uint
#endif
	{
		INDEX_TITLE_BAR_ITSELF			= 0,
		INDEX_RESERVED					= 1,
		INDEX_MINIMIZE_BUTTON			= 2,
		INDEX_MAXIMIZE_BUTTON			= 3,
		INDEX_HELP_BUTTON				= 4,
		INDEX_CLOSE_BUTTON				= 5
	}

#if( _SHARED_ )
	internal enum TitleBarInfoState : uint
#else
	public enum TitleBarInfoState : uint
#endif
	{
		STATE_SYSTEM_UNAVAILABLE        = 0x00000001,  // Disabled
		STATE_SYSTEM_FOCUSABLE          = 0x00100000,
		STATE_SYSTEM_INVISIBLE          = 0x00008000,
		STATE_SYSTEM_OFFSCREEN          = 0x00010000,
		STATE_SYSTEM_PRESSED            = 0x00000008
	}

#if( _SHARED_ )
	internal enum WindowCmdFlags : uint
#else
	public enum WindowCmdFlags : uint
#endif
	{
		GW_HWNDFIRST					= 0,
		GW_HWNDLAST						= 1,
		GW_HWNDNEXT						= 2,
		GW_HWNDPREV						= 3,
		GW_OWNER						= 4,
		GW_CHILD						= 5,
		GW_ENABLEDPOPUP					= 6
	}

#if( _SHARED_ )
	internal enum WindowLongIndexFlags
#else
	public enum WindowLongIndexFlags
#endif
	{
		GWL_WNDPROC         = (-4),
		GWL_HINSTANCE       = (-6),
		GWL_HWNDPARENT      = (-8),
		GWL_STYLE           = (-16),
		GWL_EXSTYLE         = (-20),
		GWL_USERDATA        = (-21),
		GWL_ID              = (-12)
	}

#if( _SHARED_ )
	internal enum WindowPlacementFlags : uint
#else
	public enum WindowPlacementFlags : uint
#endif
	{
		WPF_SETMINPOSITION				= 0x0001,
		WPF_RESTORETOMAXIMIZED			= 0x0002,
		WPF_ASYNCWINDOWPLACEMENT		= 0x0004
	}

#if( _SHARED_ )
	internal enum LockSetForegroundWindowFlags : uint
#else
	public enum LockSetForegroundWindowFlags : uint
#endif
	{
		LSFW_LOCK						= 1,
		LSFW_UNLOCK						= 2
	}

//	public enum SetLayeredWindowAttributesFlags
//	{
//		LWA_COLORKEY					= 0x00000001,
//		LWA_ALPHA						= 0x00000002
//	}

#if( _SHARED_ )
	internal enum WindowPosFlags : int
#else
	public enum WindowPosFlags : int
#endif
	{
		SWP_NOSIZE				= 0x0001,
		SWP_NOMOVE				= 0x0002,
		SWP_NOZORDER			= 0x0004,
		SWP_NOREDRAW			= 0x0008,
		SWP_NOACTIVATE			= 0x0010,
		SWP_FRAMECHANGED		= 0x0020,  /* The frame changed: send WM_NCCALCSIZE */
		SWP_SHOWWINDOW			= 0x0040,
		SWP_HIDEWINDOW			= 0x0080,
		SWP_NOCOPYBITS			= 0x0100,
		SWP_NOOWNERZORDER		= 0x0200,  /* Don't do owner Z ordering */
		SWP_NOSENDCHANGING		= 0x0400,  /* Don't send WM_WINDOWPOSCHANGING */

		SWP_DRAWFRAME			= SWP_FRAMECHANGED,
		SWP_NOREPOSITION		= SWP_NOOWNERZORDER,

		SWP_DEFERERASE			= 0x2000,
		SWP_ASYNCWINDOWPOS		= 0x4000
	}

//	public enum SetWindowPosHWNDFalgs : int
//	{
//		HWND_TOP        = 0,
//		HWND_BOTTOM     = 1,
//		HWND_TOPMOST    = -1,
//		HWND_NOTOPMOST  = -2
//	}

#if( _SHARED_ )
	internal struct WindowPosHWNDFlags
#else
	public struct WindowPosHWNDFlags
#endif
	{
		static WindowPosHWNDFlags()
		{
			HWND_TOP        = ((IntPtr)0);
			HWND_BOTTOM     = ((IntPtr)1);
			HWND_TOPMOST    = ((IntPtr)(-1));
			HWND_NOTOPMOST  = ((IntPtr)(-2));
		}
		
		public readonly static IntPtr HWND_TOP;
		public readonly static IntPtr HWND_BOTTOM;
		public readonly static IntPtr HWND_TOPMOST;
		public readonly static IntPtr HWND_NOTOPMOST;
	}

#if( _SHARED_ )
	internal enum AnimateWindowFlags : uint
#else
	public enum AnimateWindowFlags : uint
#endif
	{
		AW_HOR_POSITIVE             = 0x00000001,
		AW_HOR_NEGATIVE             = 0x00000002,
		AW_VER_POSITIVE             = 0x00000004,
		AW_VER_NEGATIVE             = 0x00000008,
		AW_CENTER                   = 0x00000010,
		AW_HIDE                     = 0x00010000,
		AW_ACTIVATE                 = 0x00020000,
		AW_SLIDE                    = 0x00040000,
		AW_BLEND                    = 0x00080000
	}

#if( _SHARED_ )
	internal enum UpdateLayeredWindowFlags
#else
	public enum UpdateLayeredWindowFlags
#endif
	{
		ULW_COLORKEY            = 0x00000001,
		ULW_ALPHA               = 0x00000002,
		ULW_OPAQUE              = 0x00000004
	}
}
